package org.ysling.litemall.core.tenant.enums;

/**
 * 绑定默认租户到redis索引
 */
public enum IgnoreTenant {

    /**
     * 默认租户
     */
    DEFAULT(0L, 0),

    /**
     * 未携带请求头的请求
     */
    FAIL(-1L, 1);

    /**
     * 租户id
     */
    public final Long tenantId;
    /**
     * 租户redis索引
     */
    public final Integer dbIndex;

    IgnoreTenant(Long tenantId, Integer dbIndex) {
        this.tenantId = tenantId;
        this.dbIndex = dbIndex;
    }

    /**
     * 根据租户获取redis索引
     * @param tenantId 租户id
     * @return redis索引
     */
    public static Integer parseValue(Long tenantId) {
        if (tenantId != null) {
            for (IgnoreTenant item : values()) {
                if (item.tenantId.equals(tenantId)) {
                    return item.dbIndex;
                }
            }
        }
        return null;
    }

    /**
     * 根据索引获取租户id
     * @param dbIndex redis数据库索引名
     * @return 租户id
     */
    public static Long parseKey(Integer dbIndex) {
        if (dbIndex != null) {
            for (IgnoreTenant item : values()) {
                if (item.dbIndex.equals(dbIndex)) {
                    return item.tenantId;
                }
            }
        }
        return 0L;
    }
}
